#ifndef BPE_BOUNDING_SHAPE_H
#define BPE_BOUNDING_SHAPE_H
#include "../BPEMath/BPEVector3d.h"
#include "../BPEMath/BPEBox3d.h"



class BPEBoundingShape{
protected:
	int xAreaCode;
	int yAreaCode;
	int zAreaCode;
	bool collisionStatus;
public:
	void setAreaCodes(const int &x, const int &y, const int &z);
	int getXAreaCode();
	int getYAreaCode();
	int getZAreaCode();

	bool getCollisionStatus();
	void setCollisionStatus(bool cs);


	virtual bool collide(BPEBoundingShape *other,BPEVector3d &normal, double &depth) = 0;
	virtual BPEVector3d getCenter() = 0;
	//virtual BPEVector3d getCollisionNormalVector() = 0;

	
	virtual BPEBox3d getBoundingBox() = 0;
	virtual void updatePositionAndRotation(const BPEPoint3d &position, BPEVector3d rotation = BPEVector3d(0,0,0)) = 0;

	virtual char getType() = 0;


};

#endif
